package servicios;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;

import negocio.*;
import modelo.*;

public class REST_SERVICE {
	


	@Path("clientes")
	public class RestService {
		@Inject
		private EntityManager em;
		
		@Inject
		private ClienteDAO pDao;
		@GET
		@Path("cliente")
		@PathParam("")
		@Produces({"aplications/json"})
		@Consumes("aplication/json")
		public List<MensajeRespuesta> Cliente(Cliente c){
			
			MensajeRespuesta msj=new MensajeRespuesta();
			msj.setCodigo(1);
			msj.setCliente(c);;
			msj.setMensaje("json");
			
			return Cliente(c);
			
		}
		@GET
		@Path("persona/{datos}/{datos2}")
		@Produces({"aplications/json"})
		@Consumes("aplication/json")
		public List<MensajeRespuesta> fecha11(@PathParam("datos") String variable,
											@PathParam("datos2") String variable2, 
											@QueryParam("edad") String ed, 
											@QueryParam("nombre") String nombre ){
			Date fecha=new Date();
			List<MensajeRespuesta>lista=new ArrayList<MensajeRespuesta>();
			
			MensajeRespuesta msj=new MensajeRespuesta();
			msj.setCodigo(1);
			msj.setFecha(fecha);
			msj.setMensaje(nombre+variable+variable2);
			
			MensajeRespuesta msj1=new MensajeRespuesta();
			msj1.setCodigo(1);
			msj1.setFecha(fecha);
			msj1.setMensaje("json");
			
			lista.add(msj);
			lista.add(msj1);
			return lista;
			
		}
		
		/*@GET @Path(value = "dato") 
		@Produces("application/json") 
		public List<Persona> dato(Persona per, 
				@QueryParam("tipo")String tipo){ String sql = "SELECT p From Persona p WHERE p.tipoCuenta = :tipo"; 
				Query q = em.createQuery(sql, Persona.class); 
				q.setParameter("tipo", tipo); 
				List<Persona> lista = q.getResultList(); return lista; } 
		@GET 
		@Path(value = "datos") 
		@Produces("application/json") 
		public List<Persona> datos(Persona persona){ String sql = "SELECT c From Cuenta c "; 
		Query q = em.createQuery(sql, Persona.class); 
		List<Persona> lista = q.getResultList(); 
		return lista; 
		}
		*/
	//este si

	@GET 
	@Path(value = "dato")
	@Produces("application/json") 
	public List<Cliente> dato(Cliente cliente, @QueryParam("id")String id){ 
			String sql = "SELECT c From Cliente c WHERE c.id = :id"; 
			Query q = em.createQuery(sql, Cliente.class); 
			q.setParameter("id", id); 
			List<Cliente> lista = q.getResultList(); 
			return lista; 
			} 

	@GET 
	@Path(value = "dato")
	@Produces("application/json") 
	public List<Mensaje> dato11(Mensaje mensaje, @QueryParam("id")String id){ 
			String sql = "SELECT m From Mensaje m WHERE m.id = :id"; 
			Query q = em.createQuery(sql, Mensaje.class); 
			q.setParameter("id", id); 
			List<Mensaje> lista = q.getResultList(); 
			return lista; 
			}
	@GET
	@Path(value = "datos") 
	@Produces("application/json") 
	public List<Persona> datos(Cliente cliente){ 
		String sql = "SELECT c From Cliente c "; 
		Query q = em.createQuery(sql, Persona.class); 
		List<Persona> lista = q.getResultList(); 
		return lista; 
		}

	@GET 
	@Path(value = "dato")
	@Produces("application/json") 
	public List<Persona> dato1(Persona persona, @QueryParam("cedula")String cedula){ 
			String sql = "SELECT p From Persona p WHERE p.cedula = :cedula"; 
			Query q = em.createQuery(sql, Persona.class); 
			q.setParameter("cedula", cedula); 
			List<Persona> lista = q.getResultList(); 
			return lista; 
			} 

	@POST
	@Path(value = "insertarPersona")
	@Produces("application/json")
	@Consumes("application/json")
	public MensajeRespuesta insertPersona(Cliente cliente){
		MensajeRespuesta respuesta=new MensajeRespuesta();
		respuesta.setFecha(new Date());
		try{
			System.out.println("Cedula"+cliente.getId());
			pDao.insert(cliente);
			respuesta.setCodigo(0);
			respuesta.setMensaje("ok");
		}catch(Exception e){
			respuesta.setCodigo(1);
			respuesta.setMensaje("no");
		}
		return respuesta;
		
	}
	}

}
